package eva.savant.business.contabilidad.view

import eva.savant.businessobject.cg.Cuenta
import eva.savant.businessobject.cg.Partida
import eva.savant.core.view.Bean

import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped
import javax.annotation.PostConstruct
import javax.faces.convert.Converter

@SessionScoped
@ManagedBean(name = 'IILibroMayor')
public class IILibroMayor extends Bean{

  Cuenta cuenta

  def debe, haber, saldo

  Date dateIni, dateEnd

  @PostConstruct
  public void cleanEntity() {

  debe= haber= saldo= 0

  dateIni= dateEnd= new Date()

  lsEntity= new ArrayList<Partida>()

  }

  public List findLsEntity() {

  if(dateIni == null || dateEnd == null) return null

  lsEntity= find(Partida.class,'cuenta.id=? and asiento.fecha between ? and ? order by asiento.id', cuenta.id, dateIni, toMidnight(dateEnd))


  debe= haber= 0; for(x in lsEntity) { debe = debe + x.debe; haber = haber + x.haber };

  if(cuenta.codigo.startsWith('1')) saldo= debe - haber

  if(cuenta.codigo.startsWith('2')) saldo= haber - debe

  if(cuenta.codigo.startsWith('3')) saldo= haber - debe

  if(cuenta.codigo.startsWith('4')) saldo= haber - debe

  if(cuenta.codigo.startsWith('5')) saldo= debe - haber

  if(cuenta.codigo.startsWith('6')) saldo= debe - haber

  return lsEntity
  }

  public List complete(String value) { return completeLike(Cuenta.class,'tipo= 0 and nombre',value) }

  public Converter getConverter() { return converterLike(Cuenta.class) }

}
